The development of new drug targets by the pharmaceutical industry is time-consuming and expensive because a large number of possible targets need to be tested before the molecule or compound with the desired properties is found or formulated. Along the same argument, but not for the purpose of new drug development, are the activities or synthetic biology. Here, biological entities are designed to perform a particular function. A particular example of this case is the development of biological nanomachines that might for example be used as programmed drug delivery systems. (See J. Panyam, V. Labhasetwar, Biodegradable nanoparticles for drug and gene delivery to cells and tissue. Advanced Drug Delivery Reviews, 55 (2003) 329-347.) As in drug discovery efforts, the formulation of a compound with desired properties is difficult due to the large variety of possible targets and the even larger context or system in which they must perform their function. Currently much of the work done to investigate the properties of these compounds is done in a wet-lab requiring many tedious and error prone experiments.
Development of chemical substances and nanomachinery, in addition to being time-consuming, can generate potentially dangerous intermediate substances. For example, a molecule used as transport for a drug in a drug delivery system could by its mere presence in the organism, stimulate the overproduction of some other protein. The overexpressed protein could act as a lethal toxin for the organism. Another possible complication is that the nanomachinery itself may mutate over time and either lose its original function or worse adversely interfere with the viability of the organism.
Another problem facing the drug development activity is that, due to the cumbersome nature of experimental data collection, it is typical to limit experiments by narrowing the range of tested inputs and in general isolating the subsystem of interest. This limitation allows for the possibility that new drugs have unforeseen side-effects.
Moreover, current methods of obtaining data for biological processes are even more time-consuming than those associated with chemical processes, because the latter generally require laboratory experiments that lead to animal experiments and clinical trials. From these trials and experiments, data are obtained which, again, usually focus on a very narrow part of the biological system. Only after numerous costly trial-and-error clinical trials and constant redesigning of the clinical use of the drug to account for lessons learned from the most recent clinical trial, is a drug having adequate safety and efficacy finally realized. This process of clinical trial design and redesign, multiple clinical trials and, in some situations, multiple drug redesigns requires great expense of time and money. Even then, the effort may not produce a marketable drug. While conclusions may be drawn by assimilating experimental data and published information, it is difficult, if not impossible, to synthesize the relationships among all the available data and knowledge.
The various challenges faced by the aforementioned activities in chemical and biochemical research make it desirable to have software and methods for modeling, simulating, and analyzing biological processes in-silico rather than in-vitro or in-vivo. The goal of this approach is to provide a more comprehensive view of these biological systems prior to costly experiments and to clinical trials thereby reducing the search space for drug targets and useful nanoparticles.
The simulation of biological systems requires the use of many modes of computation such as continuous time, discrete step, hybrid, particle level among others. The need for these arises from the various simplifying assumptions made in order to make the problem tractable using today's computer technology and resources. At the most basic level, the particle based approach, every molecule in a cell is accounted for individually. Given the number of molecular components in a cell this approach is prohibitively expensive unless it is used for the relatively small number of molecules in the overall system. Approximations can be made which result in a significant reduction in the computational cost. One class of simplifications group like-molecules and treat the entire group as one variable. This approach allows the development of probabilistic methods and well as differential ones, which are much less expensive in terms of computational cost. In effect, there is a continuum of methods varying from high fidelity, compute intensive to approximate and less expensive methods. Hybrid solvers are those that mix one or more of these methods to optimize the use of computational resources while achieving a high level of fidelity.
One such method which accounts for the random nature of molecular interactions is called a stochastic simulator; it may be used to simulate the time varying behavior of a collection of chemically interacting molecules in a chemical or biological system. In this case, the simulator maintains a list of reactions in the chemical or biological system that “could” happen and moves the state of the system forward through time in a two-step process. First, the simulator determines which reaction in the list of reactions will be the next to occur, and the time at which that reaction will occur. Second, the simulator simulates the reaction, adjusting the quantities of each type of molecule as specified by the stoichiometry of the reaction. This process is repeated iteratively as the system is marched forward in time. (See D. Gillespie, J. Phys. Chemistry, 81, 25 (1977).)
In certain circumstances, a user may wish to reproduce a simulation after the simulation is complete. For example, it may be desirable to replay a simulation to allow the user to observe the progress of the simulation, for example, to measure certain parameters, or to examine an unusual event that the user notices in the first simulation, or to investigate “what-if” situations at intermediate times during a simulation. The user may also wish to show the simulation to another person or watch the simulation again at a later point in time. However, reproducing a simulation can be computationally expensive or cumbersome. Current approaches to reproducing a simulation require a user to re-run a simulation, paying high computational costs, or store a state history for a particular simulated system, paying expensive storage costs.